package com.hourse.util;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by progr on 2019/12/5.
 */
public class Gaoliang {
    /**
     * 反射封装高亮工具类
     * @param content 集合
     * @param mohu 模糊
     * @param field 属性名
     * @param <T>
     * @return
     */
    public static <T> List<T> gaoliang(List<T> content, String mohu, String field){
        //创建结果集
        List<T> ts = new ArrayList<>();
        try {
            //高亮拼接的前缀
            String preTags="<font color=\"red\">";
            //高亮拼接的后缀
            String postTags="</font>";

            for(T item: content){
                //获取反射对象
                Class<?> aClass = item.getClass();
                //通过反射创建实例

                Field declaredField = null;
                //获取属性值
                declaredField = aClass.getDeclaredField(field);
                //放行私有属性
                declaredField.setAccessible(true);

                //得到对应属性值
                Object o = declaredField.get(item);
                if(!"".equals(mohu)){
                    //拼接对应属性值
                    String ff = o.toString().replace(mohu,preTags + mohu + postTags);
                    //更改该属性值
                    declaredField.set(item,ff);
                }
                //执行结果
              //  System.out.println(declaredField.get(item));
                ts.add(item);//添加到结果集
            }
        } catch (Exception e) {
            e.printStackTrace();
            //报错放弃高亮 返回集合
            return content;
        }
        return ts;
    }
}
